using EYDIngenieria.ERP.ObjetosDeNegocio.Dominio;
using EYDIngenieria.ERP.ObjetosDeNegocio.Repositorio;

namespace EYDIngenieria.ERP.Aplicacion.Gestion
{
    public class GestionFactura
    {
        private RepositorioFactura repositorioFactura = new RepositorioFactura();
        private RepositorioDetalleFactura repositorioDetalleDactura = new RepositorioDetalleFactura();
        private GestionInventario gestionInventario = new GestionInventario();
        public Factura GuardarFactura(Factura f)
        {

            long montoTotal = 0;
            Factura factura = new Factura();
            factura.Fecha = f.Fecha;
            factura.MedioDePego = f.MedioDePego;
            factura.MontoTotal = f.MontoTotal;
            factura.NumeroFactura = f.NumeroFactura;
            factura.Proveedor = f.Proveedor;
            repositorioFactura.Agregar(factura);
            foreach (DetalleFactura d in f.Detalle)
            {
                d.Factura = factura;
                d.Fecha = factura.Fecha;
                repositorioDetalleDactura.Agregar(d);
                montoTotal = montoTotal + (d.Cantidad * d.ValorUnitario);
                gestionInventario.Agregar(d.Producto, d.Cantidad, d.ValorUnitario, factura);
            }

            factura.MontoTotal = montoTotal;
            repositorioFactura.Modificar(factura);
            return factura;
          }

        public Factura[] Listar()
        {
            return repositorioFactura.Listar();
        }

        public Factura Obtener(int id)
        {
            return repositorioFactura.Obtener(id);
        }
    }
}
